{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "# -*- coding: cp936 -*- \n",
    "import time\n",
    "from PIL import Image,ImageGrab\n",
    "import os, win32gui, win32ui, win32con, win32api "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "def window_capture(dpath): \n",
    "    '''\n",
    "    截屏函数,调用方法window_capture(‘d:\\\\’) ,参数为指定保存的目录\n",
    "    返回图片文件名,文件名格式:日期.jpg 如:2009328224853.jpg\n",
    "     '''\n",
    "    hwnd = 0 \n",
    "    hwndDC = win32gui.GetWindowDC(hwnd)  \n",
    "    mfcDC=win32ui.CreateDCFromHandle(hwndDC)  \n",
    "    saveDC=mfcDC.CreateCompatibleDC()  \n",
    "    saveBitMap = win32ui.CreateBitmap()  \n",
    "    MoniterDev=win32api.EnumDisplayMonitors(None,None) \n",
    "    w = MoniterDev[0][2][2] \n",
    "    h = MoniterDev[0][2][3] \n",
    "    #print w,h　　　＃图片大小 \n",
    "    saveBitMap.CreateCompatibleBitmap(mfcDC, w, h)  \n",
    "    saveDC.SelectObject(saveBitMap)  \n",
    "    saveDC.BitBlt((0,0),(w, h) , mfcDC, (0,0), win32con.SRCCOPY) \n",
    "    cc=time.gmtime() \n",
    "    bmpname = str(cc[0])+str(cc[1])+str(cc[2])+str(cc[3]+8)+str(cc[4])+str(cc[5])+'.bmp' \n",
    "    saveBitMap.SaveBitmapFile(saveDC, bmpname) \n",
    "    Image.open(bmpname).save(bmpname[:-4] + '.jpg') \n",
    "    os.remove(bmpname) \n",
    "    jpgname=bmpname[:-4]+'.jpg' \n",
    "    djpgname=dpath+jpgname \n",
    "    copy_command = 'move %s %s' % (jpgname, djpgname) \n",
    "    os.popen(copy_command) \n",
    "    return bmpname[:-4]+'.jpg' "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 测试win32截屏速度\n",
    "输出结果为0.375秒，也就是说通过windows API每次截图只需要0.0375s，真是快得一逼呀。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 45,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.339644193649292\n"
     ]
    }
   ],
   "source": [
    "def window_capture(filename):\n",
    "    hwnd = 0 # 窗口的编号，0号表示当前活跃窗口\n",
    "    # 根据窗口句柄获取窗口的设备上下文DC（Divice Context）\n",
    "    hwndDC = win32gui.GetWindowDC(hwnd)\n",
    "    # 根据窗口的DC获取mfcDC\n",
    "    mfcDC = win32ui.CreateDCFromHandle(hwndDC)\n",
    "    # mfcDC创建可兼容的DC\n",
    "    saveDC = mfcDC.CreateCompatibleDC()\n",
    "    # 创建bigmap准备保存图片\n",
    "    saveBitMap = win32ui.CreateBitmap()\n",
    "    # 获取监控器信息\n",
    "    MoniterDev = win32api.EnumDisplayMonitors(None, None)\n",
    "    w = MoniterDev[0][2][2]\n",
    "    h = MoniterDev[0][2][3]\n",
    "    # print w,h　　　#图片大小\n",
    "    # 为bitmap开辟空间\n",
    "    saveBitMap.CreateCompatibleBitmap(mfcDC, w, h)\n",
    "    # 高度saveDC，将截图保存到saveBitmap中\n",
    "    saveDC.SelectObject(saveBitMap)\n",
    "    # 截取从左上角（0，0）长宽为（w，h）的图片\n",
    "    saveDC.BitBlt((0, 0), (w, h), mfcDC, (0, 0), win32con.SRCCOPY)\n",
    "    saveBitMap.SaveBitmapFile(saveDC, filename)\n",
    "beg = time.time()\n",
    "for i in range(10):\n",
    "    window_capture(\"haha.jpg\")\n",
    "end = time.time()\n",
    "print(end - beg)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 改造上面方法"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 61,
   "metadata": {},
   "outputs": [],
   "source": [
    "def window_capture(filename,box):\n",
    "    '''windows 窗口截图'''\n",
    "    hwnd = 0 # 窗口的编号，0号表示当前活跃窗口\n",
    "    # 根据窗口句柄获取窗口的设备上下文DC（Divice Context）\n",
    "    hwndDC = win32gui.GetWindowDC(hwnd)\n",
    "    # 根据窗口的DC获取mfcDC\n",
    "    mfcDC = win32ui.CreateDCFromHandle(hwndDC)\n",
    "    # mfcDC创建可兼容的DC\n",
    "    saveDC = mfcDC.CreateCompatibleDC()\n",
    "    # 创建bigmap准备保存图片\n",
    "    saveBitMap = win32ui.CreateBitmap()\n",
    "    # 获取监控器信息\n",
    "    w = box[2] - box[0]\n",
    "    h = box[3] - box[1]\n",
    "    # 为bitmap开辟空间\n",
    "    saveBitMap.CreateCompatibleBitmap(mfcDC, w, h)\n",
    "    # 高度saveDC，将截图保存到saveBitmap中\n",
    "    saveDC.SelectObject(saveBitMap)\n",
    "    # 截取从左上角（0，0）长宽为（w，h）的图片\n",
    "    #  参数 (原点)（右下点） mfcDC （左上点）\n",
    "    saveDC.BitBlt((0,0), (box[2], box[3]), mfcDC, (box[0], box[1]), win32con.SRCCOPY)\n",
    "    saveBitMap.SaveBitmapFile(saveDC, filename)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 获取鼠标位置"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(1089, 406)"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "win32gui.GetCursorPos()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 获取屏幕分辨率"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(1920, 1080)"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "def getResolution():\n",
    "    width = win32api.GetSystemMetrics(win32con.SM_CXSCREEN)\n",
    "    height = win32api.GetSystemMetrics(win32con.SM_CYSCREEN)\n",
    "    return width,height\n",
    "getResolution()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "864.0"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "1080 /1.25"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "1920.0"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "1536 *1.25"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "1080.0"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "864*1.25"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 修改屏幕分辨率"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(1920, 1080)"
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "import win32api\n",
    "def setResolution(width= 1920,height= 1080):\n",
    "    dm = win32api.EnumDisplaySettings(None, 0)\n",
    "    dm.PelsHeight = height\n",
    "    dm.PelsWidth = width\n",
    "    dm.BitsPerPel = 32\n",
    "    dm.DisplayFixedOutput = 0\n",
    "    win32api.ChangeDisplaySettings(dm, 0)\n",
    "    \n",
    "setResolution()\n",
    "getResolution()"
   ]
  },
  {
   "attachments": {
    "image.png": {
     "image/png": "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"
    }
   },
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 获取某个窗口的尺寸（两个函数结果一样）GetClientRect ￥GetWindowRect\n",
    "![image.png](attachment:image.png)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'hwnd is 10010'"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "import win32api\n",
    "import win32gui\n",
    "import win32con\n",
    "#获取桌面\n",
    "hwnd = win32gui.GetDesktopWindow()\n",
    "u\"hwnd is %x\" %(hwnd)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0 0 1536 864\n"
     ]
    }
   ],
   "source": [
    "(left, top, right, bottom) = win32gui.GetClientRect(hwnd)\n",
    "print(left, top, right, bottom)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 下面4句依次寻找对象，直到找到输入框Edit对象的句柄\n",
    "![示例网址]:(http://www.sahitest.com/demo/php/fileUpload.htm)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 57,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "787452"
      ]
     },
     "execution_count": 57,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "dialog = win32gui.FindWindow('#32770',u'文件上传')\n",
    "dialog"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 58,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "394054"
      ]
     },
     "execution_count": 58,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ComboBoxEx32 = win32gui.FindWindowEx(dialog,0,\"ComboBoxEx32\",None)\n",
    "ComboBoxEx32"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 59,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "394002"
      ]
     },
     "execution_count": 59,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ComboBox = win32gui.FindWindowEx(ComboBoxEx32, 0, 'ComboBox', None)\n",
    "ComboBox"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 60,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "525078"
      ]
     },
     "execution_count": 60,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "Edit = win32gui.FindWindowEx(ComboBox, 0, 'Edit', None)\n",
    "Edit"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 61,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "394012"
      ]
     },
     "execution_count": 61,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "button = win32gui.FindWindowEx(dialog, 0, 'Button', None) # 确定按钮\n",
    "button"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 62,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "1"
      ]
     },
     "execution_count": 62,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "win32gui.SendMessage(Edit, win32con.WM_SETTEXT, None, '2018314104524.jpg')# 往输入框输入绝对地址"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 63,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0"
      ]
     },
     "execution_count": 63,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "win32gui.SendMessage(dialog, win32con.WM_COMMAND, 1, button) \n",
    "# 按button "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Lib/site-packages/win32/Demos/win32gui_demo.py"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.4"
  },
  "toc": {
   "base_numbering": 1,
   "nav_menu": {},
   "number_sections": true,
   "sideBar": true,
   "skip_h1_title": false,
   "title_cell": "Table of Contents",
   "title_sidebar": "Contents",
   "toc_cell": false,
   "toc_position": {},
   "toc_section_display": true,
   "toc_window_display": true
  },
  "varInspector": {
   "cols": {
    "lenName": 16,
    "lenType": 16,
    "lenVar": 40
   },
   "kernels_config": {
    "python": {
     "delete_cmd_postfix": "",
     "delete_cmd_prefix": "del ",
     "library": "var_list.py",
     "varRefreshCmd": "print(var_dic_list())"
    },
    "r": {
     "delete_cmd_postfix": ") ",
     "delete_cmd_prefix": "rm(",
     "library": "var_list.r",
     "varRefreshCmd": "cat(var_dic_list()) "
    }
   },
   "types_to_exclude": [
    "module",
    "function",
    "builtin_function_or_method",
    "instance",
    "_Feature"
   ],
   "window_display": false
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
